`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2024/11/06 08:30:22
// Design Name: 
// Module Name: counter_top_2class
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module counter_top_2class(
    input       clk,
    input       rst,
    input       c_rst,
    input       c_stop,
    input [1:0] c_dir //1向上，0向下
 );
    
 reg [9:0] cnt;
 reg dir;
 
 always@(posedge clk or negedge rst)begin
    if(!rst)begin
        cnt<=10'b0;
    end
    else if(!c_rst)begin
        cnt<=10'b0;
    end
    else if(c_stop)begin
        cnt<=cnt;
    end
    else if(dir)begin//向上
        cnt<=cnt+1'b1;
    end
    else if(!dir)begin//向下
        cnt<=cnt-1'b1;
    end
 end   
    
 always @(posedge clk or negedge rst)begin
    if(!rst)begin
        dir<=0;
    end
    else if(c_dir==0)begin
        dir<=0;
    end
    else if(c_dir==1)begin
        dir<=1;
    end
    else if(c_dir==2)begin
        if(dir==1 && cnt==10'b1111111111-1)begin
            dir<=0;
        end
        else if(dir==0 && cnt==10'b0+1)begin
            dir<=1;
        end
        else begin
            dir<=dir;
        end
    end
 end   
    
endmodule

